﻿using Che.Domain.Entity.Che.User;
using Che.Domain.repository;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Che.EFCore.Repository
{
    public class LoginUser : ILoginUser
    {
        private readonly MyDbContext myContext;

        public LoginUser(MyDbContext myContext)
        {
            this.myContext = myContext;
        }
        // 登录方法
        public async Task<User> Logins(User users)
        {
            if (users == null || string.IsNullOrEmpty(users.UserName) || string.IsNullOrEmpty(users.Userpwd))
            {
                throw new ArgumentException("用户名和密码不能为空");
            }

            // 从数据库中查找用户
            var user = await myContext.Users
                .FirstOrDefaultAsync(u => u.UserName == users.UserName);

            if (user == null)
            {
                throw new Exception("用户不存在");
            }

            // 验证密码（假设密码是加密存储的，这里使用简单的字符串比较）
            if (user.Userpwd != users.Userpwd) // 实际项目中应使用加密算法比较
            {
                throw new Exception("密码错误");
            }

            // 登录成功，返回用户信息
            return user;
        }
        //注册方法
        public async Task<bool> Register(User user)
        {
            if (user == null || string.IsNullOrEmpty(user.UserName) || string.IsNullOrEmpty(user.Userpwd))
            {
                throw new ArgumentException("用户名和密码不能为空");
            }

            // 验证用户名是否已存在
            var existingUser = await myContext.Users
                .FirstOrDefaultAsync(u => u.UserName == user.UserName);

            if (existingUser != null)
            {
                throw new Exception("用户名已存在");
              
            }
            else
            {
                // 添加新用户到数据库
                myContext.Users.Add(user);
                await myContext.SaveChangesAsync();

                return true;
            }
        }
    }
}
